<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>promise</title>
</head>

<body>
    <script src="https://code.jquery.com/jquery-3.7.1.js"></script>
    <script>
        // promise结构
        // new Promise((res, rej) => {
        //     setTimeout(() => {
        //         var a = false
        //         if (a) {
        //             res('成功')
        //         } else {
        //             rej('失败')
        //         }
        //     }, 1000);
        // }).then(function (ral) {
        //     console.log(ral);
        // }).catch((e) => {
        //     console.log(e);
        // })

        // new Promise((res, rej) => {
        //     setTimeout(() => {
        //         var a = false
        //         if (a) {
        //             res('88888')
        //         } else {
        //             rej(77777)
        //         }
        //     }, 1000)
        // })


        // xhr封装
        // get请求封装
        // function fn(url) {
        //     return new Promise((res, rej) => {
        //         var xhr = new XMLHttpRequest()
        //         xhr.open("GET", url)
        //         xhr.send()
        //         xhr.responseType = "json"
        //         xhr.onload = function () {
        //             res(xhr.response)
        //         }
        //         xhr.onerror = function (e) {
        //             rej(e);
        //         }
        //     })
        // }
        // fn('https://liu.zzgoodqc.cn/teas')
        //     .then((rel) => {
        //         console.log(rel);
        //     }).catch((e) => {
        //         console.log(e);
        //     })


        // // post请求封装
        // function fn1(url) {
        //     return new Promise((res, rej) => {
        //         var obj = {
        //             name: '乌龙',
        //             type: '茶',
        //             price: 28,
        //             stock: 68,
        //             description: '无'
        //         }
        //         var xhr = new XMLHttpRequest()
        //         xhr.open('POST', url)
        //         xhr.setRequestHeader('Content-Type', 'application/json; charset=utf8')
        //         xhr.send(JSON.stringify(obj))
        //         xhr.responseType = 'json'
        //         xhr.onload = () => {
        //             res(xhr.response);
        //         }
        //         xhr.onerror = (e) => {
        //             rej(e);
        //         }
        //     })
        // }
        // fn1('https://liu.zzgoodqc.cn/teas')
        //     .then((rel) => {
        //         console.log(rel);
        //     }).catch((e) => {
        //         console.log(e);
        //     })



        // // put请求封装
        // function fn2(url) {
        //     return new Promise((res, reject) => {
        //         var obj = {
        //             name: '乌龙',
        //             type: '茶',
        //             price: 99,
        //         }
        //         var xhr = new XMLHttpRequest()
        //         xhr.open('PUT', url)
        //         xhr.setRequestHeader('Content-Type', 'application/json; charset=utf8')
        //         xhr.send(JSON.stringify(obj))
        //         xhr.responseType = 'json'
        //         xhr.onload = () => {
        //             res(xhr.response);
        //         }
        //         xhr.onerror = (error) => {
        //             reject(error);
        //         }
        //     })
        // }
        // fn2(`https://liu.zzgoodqc.cn/teas/${12019}`)
        //     .then((result) => {
        //         console.log(result);
        //     }).catch((e) => {
        //         console.log(e);
        //     })



        // delete请求封装
        // function fn4(url) {
        //     return new Promise((res, rej) => {
        //         var xhr = new XMLHttpRequest()
        //         xhr.open('delete', url)
        //         xhr.send()
        //         xhr.responseType = 'json'
        //         xhr.onload = () => {
        //             res(xhr.response)
        //         }
        //         xhr.onerror = (e) => {
        //             rej(e)
        //         }
        //     })
        // }
        // fn4(`https://liu.zzgoodqc.cn/teas/${12015}`)
        //     .then((rel) => {
        //         console.log(rel);
        //     })
        //     .catch((e) => {
        //         console.log(e);
        //     })


        // function fn8(type, url, data) {
        //     return new Promise((res, rej) => {
        //         $.ajax({
        //             type: type,
        //             url: url,
        //             data: data,
        //             dataType: 'json',
        //             success: (rel) => {
        //                 res(rel)
        //             },
        //             error: (e) => {
        //                 rej(e)
        //             }
        //         })
        //     })
        // }
        // fn8('GET', 'https://liu.zzgoodqc.cn/teas')
        //     .then((result) => {
        //         console.log(result);
        //     })
        //     .catch((e) => {
        //         console.log(e);
        //     })


        // var obj = {
        //     name: '乌龙',
        //     type: '茶',
        //     price: 18
        // }
        // fn8('POST', 'https://liu.zzgoodqc.cn/teas', obj)
        //     .then((result1) => {
        //         console.log(result1);
        //     })
        //     .catch((e1) => {
        //         console.log(e1);
        //     })

        // var obj1 = {
        //     name: '龙井',
        //     type: '茶',
        //     price: 18
        // }
        // fn8('PUT', `https://liu.zzgoodqc.cn/teas/${12046}`, obj1)
        //     .then((result2) => {
        //         console.log(result2);
        //     })
        //     .catch((e2) => {
        //         console.log(e2);
        //     })

        // fn8('DELETE', `https://liu.zzgoodqc.cn/teas/${12048}`)
        //     .then((result3) => {
        //         console.log(result3);
        //     })
        //     .catch((e3) => {
        //         console.log(e3);
        //     })





        // function fn5() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             var a = true
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 1000);
        //     })
        // }

        // function fn6() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             var a = false
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 500);
        //     })
        // }

        // function fn7() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             var a = false
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 1000);
        //     })
        // }


        // all、any、race方法
        // all:所有的都成功，才是成功，只要有一个失败就返回失败
        // Promise.all([fn5(), fn6(), fn7()])
        //     .then((rel) => {
        //         console.log(rel);
        //     })
        //     .catch((e) => {
        //         console.log(e);
        //     })

        // any：只要有一个成功就是成功，所有的失败才是失败
        // Promise.any([fn5(), fn6(), fn7()])
        //     .then((rel) => {
        //         console.log(rel);
        //     })
        //     .catch((e) => {
        //         console.log(e);
        //     })

        // race：谁先执行完就输出谁的状态
        // Promise.race([fn5(), fn6(), fn7()])
        //     .then((rel) => {
        //         console.log(rel);
        //     })
        //     .catch((e) => {
        //         console.log(e);
        //     })





        // 消除回调地狱
        // function fn1() {
        //     setTimeout(() => {
        //         console.log(1111);
        //         iter.next()

        //     }, 1000);
        // }
        // function fn2() {
        //     setTimeout(() => {
        //         console.log(2222);
        //         iter.next()
        //     }, 1000);
        // }
        // function fn3() {
        //     setTimeout(() => {
        //         console.log(3333);
        //     }, 1000);
        // }
        // function* fn() {
        //     yield fn1()
        //     yield fn2()
        //     yield fn3()
        // }
        // var iter = fn()
        // iter.next()


        // 实现数组去重
        // var arr = [1,3,5,8,5,7,7,7,7]
        // var s = new Set(arr)   //数据结构set成员的值是独一无二的
        // console.log([...s]);



        // 默认参数
        // function fn(a, b = 20, c = 30) {
        //     console.log(a, b, c);
        // }
        // fn(10, 25)    //输出：10，25，30



        // 解构赋值
        // 数组
        // var arr = [5, 6, 8]
        // var [a, b, c] = arr
        // console.log(b);

        // // 对象
        // var obj = {
        //     name: 'Lisa',
        //     age: 18,
        //     height: 168
        // }
        // var { name, age, height } = obj
        // console.log(age);



        // 简化对象的写法
        // var name = 'Lisa'
        // var obj = {
        //     name,
        //     age: 18
        // }
        // console.log(obj);

    </script>
</body>

</html>